AWS ParallelCluster クラスター単位でコスト配分タグを付与するコンフィグ設定
AWS ParallelCluster のクラスター単位でコスト配分タグを設定できるか検証する機会がありました。タグを付与するためのクラスターのコンフィグを設定を紹介します。
検証環境
ParallelCluster 3.5.0 を用いて検証しています。
やってみた
ParalLeclCluster のコンフィグからタグ設定の箇所を抜粋しました。設定は以下の様になります。
Tags:
セクション内にKey
とValue
を記述する- 配列で定義するため
Key:
の前には-(ハイフン)
が必要ですけどValue:
の前には不要です - Tags section - AWS ParallelCluster
Region: ap-northeast-1 Image: Os: ubuntu2004 Tags: - Key: Name Value: TestTagCluster - Key: "CostAllocation" Value: "Project-A"
コンフィグ全文は長いため折りたたみしています。
折りたたみ
Region: ap-northeast-1 Image: Os: ubuntu2004 Tags: - Key: Name Value: TestTagCluster - Key: "CostAllocation" Value: "Project-A" # ---------------------------------------------------------------- # Head Node Settings # ---------------------------------------------------------------- HeadNode: InstanceType: t3.micro Networking: ElasticIp: false SubnetId: subnet-035be95eeaa091603 Ssh: KeyName: sandbox-key LocalStorage: RootVolume: Size: 35 Encrypted: true VolumeType: gp3 Iops: 3000 Throughput: 125 Iam: AdditionalIamPolicies: - Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore S3Access: - BucketName: hpc-dev-postinstall-files EnableWriteAccess: false # ---------------------------------------------------------------- # Compute Node Settings # ---------------------------------------------------------------- Scheduling: Scheduler: slurm SlurmSettings: ScaledownIdletime: 5 SlurmQueues: # ------ Compute 1 ------ - Name: queue-1 ComputeResources: - Name: multiaz-queue Instances: - InstanceType: c6i.large MinCount: 0 MaxCount: 10 DisableSimultaneousMultithreading: true ComputeSettings: LocalStorage: RootVolume: Size: 35 Encrypted: true VolumeType: gp3 Iops: 3000 Throughput: 125 CapacityType: SPOT AllocationStrategy: lowest-price Networking: SubnetIds: - subnet-035be95eeaa091603 PlacementGroup: Enabled: true Id: my-partition-placement-groups # CustomActions: # OnNodeConfigured: # Script: s3://hpc-dev-postinstall-files/sample-ubuntu-docker/postinstall.sh Iam: AdditionalIamPolicies: - Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore S3Access: - BucketName: hpc-dev-postinstall-files EnableWriteAccess: false # ---------------------------------------------------------------- # Shared Storage Settings # ---------------------------------------------------------------- SharedStorage: - MountDir: /mnt/efs-1zone Name: efs-1zone StorageType: Efs EfsSettings: FileSystemId: fs-0f1158ade79354809 # ---------------------------------------------------------------- # Other Settings # ---------------------------------------------------------------- Monitoring: Logs: CloudWatch: Enabled: true RetentionInDays: 30 DeletionPolicy: "Delete" Dashboards: CloudWatch: Enabled: false
クラスターを作成します。
$ pcluster create-cluster -n test-tag-cluster -c test-tag-cluster.yaml
クラスターに付与されたタグを確認してみる
ヘッドノード、コンピュートノードはもちろん、クラスターを構成するすべてのリソースにタグが付与されます。
ParallelCluster を利用するうえでは余り意識しませんが、コンピュートノードのステータスを管理している DynamoDB や、コストは発生しないセキュリティグループなどのさまざまなリソースがクラスター作成時に生成されています。
一部リソースのタグ付与状況を確認してみます。
Head Node
ヘッドノードのインスタンスからタグを確認できます。
Compute Node
ParallelCluster の利用費の大半がコンピュートノードの利用費(計算コスト)ではないでしょうか?タグが付与されていることを確認できました。
CloudWatch Logs
ヘッドノード、コンピュートノードのログは CloudWatch Logs へ保存されています。こちらもタグを確認できました。
DynamoDB
DyanamoDB ではコンピュートノードのステータスを管理されています。通常は DyanamoDB のテーブルを直接参照することはありませんがpclsuter
コマンド経由で参照することはあります。こちらもタグを確認できました。
おわりに
Name タグは普段からご利用いただいているのではないかと思います。クラスター単位でコスト管理したい場合はTags:
セクションに少し書き足すだけでお手軽に実現できます。
リセラー経由でお使いの AWS アカウント場合はコスト配分タグのKey
の値はリセラー側で指定されていることがあります。ご契約いただいているリセラーにご確認いただければよろしいかと思います。
弊社クラスメソッドメンバーズの AWS アカウント場合は以下のリンクをご確認ください。(要ポータルサイトログイン)